#!/usr/bin/python
# -*- coding:UTF-8 -*-
# 文件名: test01.py

counter = 100 # 赋值整数型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串型

print(counter),
print(miles),
print(name)

# 同时为多个变量赋值
a = b = c = 1
print(a, b, c)
a, b, c = 1, 2, "John"
print(a, b, c)
# Numbers（数字）
# String（字符串）
# List（列表）
# Tuple（元组）
# Dictionary（字典）

# Python数字
# int （有符号整数）
# long 长整型，也可以代表八进制和十六进制
# float 浮点型
# complex 复数
int01 = 10
int02 = 070
int03 = 0x69
long01 = 519L
long02 = 0123L
long03 = 0x122L
float01 = 0.0
float02 = 15.20
float03 = 32.3e+18
complex01 = 3.14j
complex02 = 45.j
complex03 = 9.322e-36j
complex04 = -.6545+0J
print(int01, int02, int03)
print(long01, long02, long03)
print(float01, float02, float03)
print(complex01, complex02, complex03, complex04)

# Python 字符串
s = 'abcdef'
print(s[1:5]) # 输出s[1]到s[5]的值，不包括s[5]
print(s[-5:-1])

str01 = 'Hello World!'
print(str01)
print(str01[0])
print(str01[2:5])
print(str01[2:])
print(str01 * 2) # 输出字符串两次
print(str01 + "Test") # 字符串连接

# Python 列表
list01 = ['runoob', 786, 2.23, 'john', 70.2]
tinylist = [123, 'john']
print(list01)
print(list01[0])
print(list01[1:3])
print(list01[2:])
print(tinylist * 2)
print(list01 + tinylist)

# Python 元组
tuple01 = ('runoob', 786, 2.23, 'john', 70.2)
tinytuple = (123, 'john')
print(tuple01)
print(tuple01[0])
print(tuple01[1:3])
print(tuple01[2:])
print(tinytuple * 2)
print(tuple01 + tinytuple)

# Python 字典
dict01 = {}
dict01["one"] = "This is one"
dict01[2] = "This is two"
tinydict = {'name':'john','code':6734, 'dept':'sales'}
# tpye 与 instance 有区别，type只能判断基本类型，instance可判断类对象类型
print(type(dict01))
print(isinstance(dict01, dict))
print(dict01["one"])
print(dict01[2])
print(tinydict)
print(tinydict.keys())
print(tinydict.values())

# Python 数据类型转换
# int(x,[,base]) # 将x转换为一个整数
# class int(x, base=10)
# 若x为纯数字，则不能有base，用于取整
# 若x为字符串，base可有可无，默认表示字符串为10进制
print(int())
print(int(3))
print(int(3.6))
print(int('12',16))
print(int('0xa',16))
print(int('10',8))
# long(x,[,base]) # 将x转换为一个长整型
# 与int函数相同
print(long('123'))
# float(x) # 将x转换到一个浮点数
print(float(2))
print(float('2.345'))
# complex(real,[,image]) # 创建一个复数
print(complex(1,2))
print(complex(1))
print(complex("1"))
print(complex("1+2j"))
# str(x) # 将对象x转换为字符串
s = 'RUNOOB'
print(str(s))
dict02 = {'runoob':'runoob.com','google':'google.com'}
print(str(dict02))
# repr(x) # 将对象x转换为表达式字符串
s = 'RUNOOB'
print(repr(s))
print(repr(dict02))
# eval(str) # 计算字符串中有效的Python表达式，并返回一个对象
x = 7
print(eval('3 * x'))
print(eval('pow(2,2)'))
print(eval('2 + 2'))
n = 81
print(eval("n + 4"))
# 通过eval去除字符串属性
a = '123'
print(type(a))
print(type(eval(a)))
# tuple(s) # 将列表s转换为一个元组
print(tuple([1,2,3,4])) # 列表返回元组
print(tuple({1:2,3:4})) # 字典返回key组成的元组
print(tuple((1,2,3,4))) # 元组返回自身
# list(s) # 将序列s转换为一个列表
tuple02 = (123,'xyz','zara','abc')
list01 = list(tuple02)
print(list01)
# set(s) # 将序列s转换为一个可变集合
# set 无序不重复元素集，可进行关系测试、删除重复数据、计算交集、差集、并集等。
x = set('runoob')
y = set('google')
print(x,y) # 重复项被删除
print(x & y) # 交集
print(x | y) # 并集
print(x - y) # 差集
print(y - x)
# dict(d) # 创建一个字典，d必须是一个序列(key,value)元组
print(dict(a = 'a', b = 'b', t = 't'))
print(dict(zip(['one','two','three'],[1, 2, 3])))
print(dict([('one',1),('two',2),('three',3)]))
# frozenset(s) # 转换为不可变集合，冻结后集合不能再添加或删除任何元素
print(frozenset(range(10)))
print(frozenset('runoob'))
# chr(x) # 将一个整数转换为字符
print(chr(0x30),chr(0x31),chr(0x61),chr(48),chr(49),chr(97))
# unichr(x) # 将一个整数转换为它的字符,返回unicode的字符
print(unichr(0x30),unichr(0x31),unichr(0x61),unichr(48),unichr(49),unichr(97))
# ord(x) # 将一个字符转换为它的整数值, chr和unichr若反向函数
print(ord('a'),ord(u'b'),ord('c'))
# hex(x) # 将一个整数转换为一个十六进制字符串
print(hex(255), hex(-42), hex(1L), hex(12), type(hex(12)))
# oct(x) # 将一个整数转换为一个八进制字符串
print(oct(255), oct(-42), oct(1L), oct(12), type(oct(12)))